class Person: # 定义人这个类
    def __init__(self, name, age):
        self.name = name
        self.age = age

    def __del__(self):
        print("我被销毁了....%s" % self.name)

    def __str__(self):
        #print("调用了__str__函数,我是%s" % (self.name)) # TypeError: __str__ returned non-string (type NoneType)
        return "调用了__Str__函数,我是%s,我的年龄是%s" % (self.name, self.age)

    def show_info(self):
        print("我的名字是%s, 我的年龄是%d" % (self.name, self.age))

p1 = Person("小晶晶", 20)  # 创建对象 1 开辟内存空间(存储对象)  2 自动的调用init
p2 = Person("大亮亮", 23)

del p1  # 删除p1对象, 在p1被销毁前,会自动的调用__del__函数,执行__del__函数体中的内容

#while True:
#    pass

print(p2)  # <__main__.Person object at 0x0000000002171208>
# 调用了__Str__函数,我是大亮亮,我的年龄是23


p2.show_info()  # 我的名字是大亮亮, 我的年龄是23